<?php
include_once('inc/functions.inc.php');
$db = DbManager::getMe();
if (!isEmpty(getParam('operation'))) {

    switch (getParam('operation')) {
        case 'filtro': {
                fntAcademicoCobrosGeneracionFiltro($db);
                break;
            }
        case 'secciones': {
                fntAcademicoCobrosGeneracionFiltroSecciones($db);
                break;
            }
        case 'contenido': {
                fntAcademicoCobrosGeneracionContenido($db);
                break;
            }
        case 's': {
                fntAcademicoCobrosGeneracionGrabar($db);
                break;
            }
    }
    die();
}

function fntAcademicoCobrosGeneracionFiltro($db) {
    //VARIBLES
    $strQuery = "";
    //VARIBLES
    ?>

    <div style="width: 1000px; float: left;">      
        &nbsp;</div>
    <div style="width: 100px; height: 30px; float: left;"><b>Periodo</b></div>
    <div style="width: 200px; height: 30px; float: left;">
        <select name="txtAcademicoCobrosGeneracion_FK-PERIODO" style="">
            <option value=""></option>
            <?php
            $strQuery = "SELECT * FROM cllg_academico_periodos WHERE ACTIVO = 'Y'";
            $qTMP = $db->queryToArray($strQuery);
            foreach ($qTMP as $rTMP) {
                $strSelected = "";
                ?>
                <option value="<?php print $rTMP["ID"]; ?>" <?php print $strSelected; ?>><?php print $rTMP["NOMBRE"]; ?></option>
                <?php
            }
            $db->free_result($qTMP);
            ?>
        </select>
    </div>
    <div style="width: 100px; height: 30px; float: left;"><b>Generar a</b></div>
    <div style="width: 600px; height: 30px; float: left;">
        <select name="txtAcademicoCobrosGeneracion_FK-TIPO" style="">
            <option value="ESTUDIANTES">Estudiantes</option>
            <option value="BENEFACTORES">Benefactores</option>
        </select>
    </div>
    <div style="width: 1000px; float: left;" id="divAcademicoCobrosGeneracionEstudiante">
        <div style="width: 100px; height: 30px; float: left;"><b>Grado</b></div>
        <div style="width: 200px; height: 30px; float: left;">
            <select name="txtAcademicoCobrosGeneracion_FK-GRADO" style="">
                <option value="0">&nbsp;</option>
                <?php
                $strQuery = "SELECT * FROM cllg_academico_grados WHERE ACTIVO = 'Y'";
                $qTMP = $db->query($strQuery);
                while ($rTMP = $db->fetch_array($qTMP)) {
                    ?>
                    <option value="<?php print $rTMP["ID"]; ?>" <?php print $strSelected; ?>><?php print $rTMP["NOMBRE"]; ?></option>
                    <?php
                }
                $db->free_result($qTMP);
                ?>
            </select>
        </div>        
    </div>
    <div style="width: 100px; height: 30px; float: left;"><b>Vigencia</b></div>
    <div style="width: 900px; height: 30px; float: left;">
        <select name="txtAcademicoCobrosGeneracion_VIGENCIA" style="">
            <option value="anual">Anual</option>
            <option value="mensual">Mensual</option>
        </select>
    </div>
    <div style="width: 100px; height: 30px; float: left;"><b>Mes Inicio</b></div>
    <div style="width: 200px; height: 30px; float: left;">
        <select name="txtAcademicoCobrosGeneracion_MES-INICIO" style="">
            <option value="1">Enero</option>
            <option value="2">Febrero</option>
            <option value="3">Marzo</option>
            <option value="4">Abril</option>
            <option value="5">Mayo</option>
            <option value="6">Junio</option>
            <option value="7">Julio</option>
            <option value="8">Agosto</option>
            <option value="9">Septiembre</option>
            <option value="10">Octubre</option>
            <option value="11">Noviembre</option>
            <option value="12">Diciembre</option>
        </select>
    </div>
    <div style="width: 100px; height: 30px; float: left;"><b>Mes Final</b></div>
    <div style="width: 200px; height: 30px; float: left;">
        <select name="txtAcademicoCobrosGeneracion_MES-FINAL" style="">
            <option value="1">Enero</option>
            <option value="2">Febrero</option>
            <option value="3">Marzo</option>
            <option value="4">Abril</option>
            <option value="5">Mayo</option>
            <option value="6">Junio</option>
            <option value="7">Julio</option>
            <option value="8">Agosto</option>
            <option value="9">Septiembre</option>
            <option value="10">Octubre</option>
            <option value="11">Noviembre</option>
            <option value="12">Diciembre</option>
        </select>
    </div>
    <div style="width: 500px; float: left;">
        <button id="btnFiltrar" type="button">Generar</button>
    </div>
    <div style="width: 500px; float: left; text-align: center;">&nbsp;</div>
    <script type="text/javascript">
        $(function() {
            $("button").button();
            $("[name='txtAcademicoCobrosGeneracion_FK-TIPO']").change( function() {
                if( $(this).val() == "ESTUDIANTES" ) {
                    $("#divAcademicoCobrosGeneracionEstudiante").show();
                }
                else {
                    $("#divAcademicoCobrosGeneracionEstudiante").hide();
                }
            });
            $("[name='txtAcademicoCobrosGeneracion_FK-GRADO']").change( function() {
                fntAcademicoCobrosGeneracionFiltroSeccion();
            });
            $("#btnFiltrar").click( function() {
                fntAcademicoCobrosGeneracionContenido();
            });
        });
    </script>
    <?php
}

function fntAcademicoCobrosGeneracionFiltroSecciones($db) {
    $strQuery = "";
    $strGrado = isset($_POST["txtAcademicoCobrosGeneracion_FK-GRADO"]) ? $_POST["txtAcademicoCobrosGeneracion_FK-GRADO"] : "";
    ?>
    <select name="txtAcademicoCobrosGeneracion_FK-SECCION">
        <option value="0"></option>
        <?php
        $strSelected = "";
        $strQuery = "SELECT  * 
                FROM    cllg_academico_secciones,
                        cllg_academico_grados_secciones 
                WHERE   cllg_academico_secciones.ID = cllg_academico_grados_secciones.FK_SECCION
                AND     cllg_academico_grados_secciones.FK_GRADO = '{$strGrado}'";
        $qTMP = $db->query($strQuery);
        while ($rTMP = $db->fetch_array($qTMP)) {
            $strSelected = ( $strGrado == $rTMP["ID"] ) ? "selected" : "";
            ?>
            <option value="<?php print $rTMP["ID"]; ?>"><?php print $rTMP["NOMBRE"]; ?></option>
            <?php
        }
        $db->free_result($qTMP);
        ?>
    </select>
    <?php
}

function fntAcademicoCobrosGeneracionContenido($db) {
    ?>
    <div class="dttb" style=" padding-top: 15px; height: 400px; overflow-x: auto; width: 1000px; background: white; 
         margin-right: 5px; padding-right: 5px; ">
        <table width="100%"  cellpadding="2" cellspacing="2" border="0" >
            <?php
            $strPeriodo = isset($_POST["txtAcademicoCobrosGeneracion_FK-PERIODO"]) ? $_POST["txtAcademicoCobrosGeneracion_FK-PERIODO"] : "";
            $strGrado = isset($_POST["txtAcademicoCobrosGeneracion_FK-GRADO"]) ? $_POST["txtAcademicoCobrosGeneracion_FK-GRADO"] : "";
            $strVigencia = isset($_POST["txtAcademicoCobrosGeneracion_VIGENCIA"]) ? $_POST["txtAcademicoCobrosGeneracion_VIGENCIA"] : "";
            $strTipo = isset($_POST["txtAcademicoCobrosGeneracion_FK-TIPO"]) ? $_POST["txtAcademicoCobrosGeneracion_FK-TIPO"] : "";

            if ($strTipo == "ESTUDIANTES") {
                ?>
                <thead>
                    <tr>
                        <th  align="center">
                            <input  type="checkbox" value="1" name="checkAll" id="checkAll" /><label for="all" ></label> 
                        </th>
                        <th ><b>Estudiante</b></th>
                        <th align="center" ><b>Valor</b></th>   
                    </tr>
                </thead>
                <tbody>
                    <?php
                    $i = 0;
                    $strQuery = "SELECT  cllg_student.ID, cllg_student.FIRST_NAME, cllg_student.LAST_NAME,
                            cllg_academico_cargos_detail.ID AS CargoDetailId, cllg_academico_cargos_detail.VALOR,
                            cllg_academico_periodos.MES_INICIO, cllg_academico_periodos.ANIO_INICIO, 
                            cllg_academico_periodos.MES_FIN, cllg_academico_periodos.ANIO_FIN
                    FROM    cllg_student, 
                            cllg_academico_estudiantes_asignacion,
                            cllg_academico_cargos, 
                            cllg_academico_cargos_detail,
                            cllg_academico_periodos 
                    WHERE   cllg_student.ID = cllg_academico_estudiantes_asignacion.FK_ESTUDIANTE
                    AND     cllg_academico_cargos.FK_PERIODO = cllg_academico_estudiantes_asignacion.FK_PERIODO
                    AND     cllg_academico_cargos.FK_GRADO = cllg_academico_estudiantes_asignacion.FK_GRADO
                    AND     cllg_academico_cargos.ID = cllg_academico_cargos_detail.FK_CARGOS 
                    AND     cllg_academico_estudiantes_asignacion.FK_PERIODO = '{$strPeriodo}'
                    AND     cllg_academico_estudiantes_asignacion.FK_GRADO = '{$strGrado}'                    
                    AND     cllg_academico_cargos_detail.VIGENCIA = '{$strVigencia}' 
                    AND     cllg_academico_cargos_detail.TIPO = 'padres'
                    AND     cllg_academico_estudiantes_asignacion.FK_PERIODO = cllg_academico_periodos.ID";

                    $qTMP = $db->query($strQuery);
                    while ($rTMP = $db->fetch_array($qTMP)) {
                        $i++;
                        ?>
                        <tr>
                            <td align="center">
                                <input type="checkbox" name="chkEstudiante_<?php print $i; ?>" value="<?php print $rTMP["ID"]; ?>" />
                                <input type="hidden" name="hdnTipo_<?php print $i; ?>" value="ESTUDIANTE" />
                                <input type="hidden" name="hdnCargoDetailId_<?php print $i; ?>" value="<?php print $rTMP["CargoDetailId"]; ?>" />
                            </td>
                            <td>
                                <input type="hidden" name="txtEstudiante_<?php print $i; ?>" value="<?php print $rTMP["ID"]; ?>">
                                <?php print $rTMP["ID"] . " - " . htmlentities($rTMP["FIRST_NAME"] . " " . $rTMP["LAST_NAME"]); ?>
                            </td>
                            <td align="right">
                                <input type="hidden" name="txtValor_<?php print $i; ?>" value="<?php print $rTMP["VALOR"]; ?>">
                                <input type="hidden" name="txtAnioInicio_<?php print $i; ?>" value="<?php print $rTMP["ANIO_INICIO"]; ?>">
                                <input type="hidden" name="txtAnioFin_<?php print $i; ?>" value="<?php print $rTMP["ANIO_FIN"]; ?>">
                                <?php print $rTMP["VALOR"]; ?>
                            </td>                                                     
                        </tr>
                        <?php
                    }
                    $db->free_result($qTMP);
                }
                ?></tbody>
            <?php
            if ($strTipo == "BENEFACTORES") {
                ?>
                <thead>
                    <tr>
                        <th align="center">
                            <input  type="checkbox" value="1" name="checkAll" id="checkAll" /><label for="all" ></label> 
                        </th>
                        <th><b>Benefactor</b></th>
                        <th><b>Beneficiarios</b></th>
                        <th align="center"><b>Valor</b></th>           
                    </tr>
                </thead>
                <tbody>
                    <?php
                    $i = 0;
                    $strQuery = "SELECT  cllg_academico_periodos.ANIO_INICIO, cllg_academico_periodos.ANIO_FIN, 
                            cllg_academico_periodos.MES_INICIO, cllg_academico_periodos.MES_FIN, 
                            cllg_benefactor.ID, cllg_benefactor.RAZON_SOCIAL,
                            count(*) TOT_BENEFICIARIOS,        
                            SUM(cllg_academico_cargos_detail.VALOR) AS VALOR, cllg_academico_cargos_detail.TIPO, 
                            cllg_academico_cargos_detail.VIGENCIA, cllg_academico_cargos_detail.ID AS CargoDetailId
                    FROM    cllg_academico_periodos,
                            cllg_benefactor,
                            cllg_student_benefactor,
                            cllg_student,
                            cllg_academico_estudiantes_asignacion,
                            cllg_academico_cargos,
                            cllg_academico_cargos_detail
                    WHERE   cllg_academico_periodos.ID = '{$strPeriodo}'
                    AND     cllg_benefactor.ID = cllg_student_benefactor.BENEFACTOR
                    AND     cllg_student_benefactor.STUDENT = cllg_student.ID
                    AND     cllg_student.ID = cllg_academico_estudiantes_asignacion.FK_ESTUDIANTE
                    AND     cllg_academico_periodos.ID = cllg_academico_estudiantes_asignacion.FK_PERIODO
                    AND     cllg_academico_periodos.ID = cllg_academico_cargos.FK_PERIODO
                    AND     cllg_academico_cargos.FK_GRADO = cllg_academico_estudiantes_asignacion.FK_GRADO
                    AND     cllg_academico_cargos.ID = cllg_academico_cargos_detail.FK_CARGOS
                    AND     cllg_academico_cargos_detail.TIPO = 'benefactores'
                    AND     cllg_academico_cargos_detail.VIGENCIA = '{$strVigencia}'
                    GROUP   BY cllg_benefactor.ID";
                    $benefactorHijos = array();
                    $qTMP = $db->query($strQuery);
                    while ($rTMP = $db->fetch_array($qTMP)) {
                        $i++;
                        $benefactorHijos[$rTMP["ID"]] = $rTMP["TOT_BENEFICIARIOS"];
                        ?>
                        <tr>
                            <td align="center">
                                <input type="checkbox" name="chkEstudiante_<?php print $i; ?>" value="<?php print $rTMP["ID"]; ?>" />
                                <input type="hidden" name="hdnTipo_<?php print $i; ?>" value="BENEFACTOR" />
                                <input type="hidden" name="hdnCargoDetailId_<?php print $i; ?>" value="<?php print $rTMP["CargoDetailId"]; ?>" />
                            </td>
                            <td>
                                <input type="hidden" name="txtEstudiante_<?php print $i; ?>" value="<?php print $rTMP["ID"]; ?>"/>
                                <?php print $rTMP["ID"] . " - " . htmlentities($rTMP["RAZON_SOCIAL"]); ?>
                            </td>
                            <td>
                                <?php print $rTMP["TOT_BENEFICIARIOS"]; ?>
                            </td>
                            <td align="right">
                                <input type="hidden" name="txtValor_<?php print $i; ?>" value="<?php print $rTMP["VALOR"]; ?>"/>
                                <?php print $rTMP["VALOR"]; ?>
                                <input type="hidden" name="txtAnioInicio_<?php print $i; ?>" value="<?php print $rTMP["ANIO_INICIO"]; ?>"/>
                                <input type="hidden" name="txtAnioFin_<?php print $i; ?>" value="<?php print $rTMP["ANIO_FIN"]; ?>"/>   
                            </td>                            
                        </tr>
                        <?php
                    }
                    $db->free_result($qTMP);
                    addSessionVar("benefactorHijos", $benefactorHijos, true);
                    ?></tbody><?php
        }
                ?>                
        </table>
    </div>    
    <script type="text/javascript">
        (function($){
            $("#checkAll").click( function() {
                if($(this).attr("checked")){
                    $("[name*='chkEstudiante_']").attr("checked",true);	
                }else{
                    $("[name*='chkEstudiante_']").attr("checked",false);	
                }
            });		  
        })(jQuery)
    </script>
    <?php
}

function fntAcademicoCobrosGeneracionGrabar($db) {
    $intMesInicio = isset($_POST["txtAcademicoCobrosGeneracion_MES-INICIO"]) ? $_POST["txtAcademicoCobrosGeneracion_MES-INICIO"] : "";
    $intMesFinal = isset($_POST["txtAcademicoCobrosGeneracion_MES-FINAL"]) ? $_POST["txtAcademicoCobrosGeneracion_MES-FINAL"] : "";
    $intMaximo = 0;
    $strQuery = "SELECT MAX(CODIGO) AS MAXIMO FROM cllg_academico_cobros WHERE 1";
    $rsCobroMaximo = $db->query($strQuery);
    while ($rTMP = $db->fetch_array($rsCobroMaximo)) {
        $intMaximo = intval($rTMP["MAXIMO"]) + 1;
    }
    $db->free_result($rsCobroMaximo);

    while ($arrPost = each($_POST)) {
        $arrExplode = explode("_", $arrPost["key"]);
        if ($arrExplode[0] == "chkEstudiante") {
            $strTipo = $_POST["hdnTipo_{$arrExplode[1]}"];
            $strEstudiante = $_POST["txtEstudiante_{$arrExplode[1]}"];
            $strFecha = (isset($_POST["sltFecha_{$arrExplode[1]}"]) ? $_POST["sltFecha_{$arrExplode[1]}"] : '01') . "-01-";
            $intCargoDetailId = $_POST["hdnCargoDetailId_{$arrExplode[1]}"];
            $sinValor = $_POST["txtValor_{$arrExplode[1]}"];
            $intAnioInicio = $_POST["txtAnioInicio_{$arrExplode[1]}"];

            //verifica el tipo de cargo
            $sqlCargoTipo = sprintf("select * from cllg_academico_cargos_detail where ID=%s", $intCargoDetailId);
            $cargoTipo = $db->queryToArray($sqlCargoTipo);
            $cargoTipo = $cargoTipo[0];

            //solo lo genera una vez.
            if ($cargoTipo["VIGENCIA"] == 'anual') {
                $intMesFinal = $intMesInicio;
            }
            $totalCobros = 0;
            for ($j = $intMesInicio; $j <= $intMesFinal; $j++) {
                $strFecha = $intAnioInicio . "-" . $j . "-01";
                $fechaVence = add_date($strFecha, 15);
                $fechaVence = date('Y-m-d h:i:s', strtotime($fechaVence));
                $sqlCargos = sprintf("select count(*) pendientes 
                        from cllg_academico_cobros co
                        where 
                        co.TIPO='%s'
                        and co.FK_ESTUDIANTE=%s
                        and co.FECHA='%s' and co.ESTADO<>'ANULADO' 
                        and co.FK_CARGO_DETAIL_ID=%s", $strTipo, $strEstudiante, $strFecha, $intCargoDetailId);

                $cargosActuales = $db->queryToArray($sqlCargos);
                $cargosActuales = $cargosActuales[0];
                $pendientes = $cargosActuales["pendientes"];

                //inicio patch evitando el cambio de valor en sniffer
                $sinValor = $cargoTipo["VALOR"];
                //fin patch
                if ($strTipo == "BENEFACTOR") {
                    $bHijos = getSessionVar("benefactorHijos", true);
                    $sinValor = $sinValor * (!isset($bHijos[$strEstudiante]) ? 0 : $bHijos[$strEstudiante]);
                }
                if ($pendientes <= 0) {
                    $db->query("INSERT INTO cllg_academico_cobros 
                            (TIPO, FK_ESTUDIANTE, FECHA, FK_CARGO_DETAIL_ID, VALOR, SALDO_ACT, ESTADO, CODIGO, FECHA_VENCE) 
                            VALUES 
                            ('{$strTipo}', '{$strEstudiante}', '{$strFecha}', '{$intCargoDetailId}',
                            '{$sinValor}','{$sinValor}', 'INGRESADO', '{$intMaximo}','{$fechaVence}')");

                    $data = array("cobro" => $intMaximo, "fkEstudiante" => ($strTipo == 'ESTUDIANTE' ? $strEstudiante : -1),
                        "fkBenefactor" => ($strTipo != 'ESTUDIANTE' ? $strEstudiante : -1), "value" => $sinValor,
                        "debe" => 0, "haber" => $sinValor, "DESCRIPCION" => "Generacion de Cargo:  " . $cargoTipo["DESCRIPCION"]);
                    registerMovCta($data, $db);
                    $totalCobros++;
                }
            }
        }
    }
    $bHijos = getSessionVar("benefactorHijos", true);
    echo "Cobros Generados. $totalCobros";
}
?>